home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Champak 109
/
Vol 109.iso
/
games
/
rush_hou.swf
/
scripts
/
FComboBoxSymbol.as
< prev
next >
Wrap
Text File
|
2008-11-12
|
15KB
|
504 lines
function FComboBoxClass()
{
var _loc1_ = this;
_global._popUpLevel = _global._popUpLevel != undefined ? _global._popUpLevel + 1 : 20000;
_loc1_.superHolder = _root.createEmptyMovieClip("superHolder" + _popUpLevel,_popUpLevel);
var _loc3_ = _loc1_.superHolder.createEmptyMovieClip("testCont",20000);
var testBox = _loc3_.attachMovie("FBoundingBoxSymbol","boundingBox_mc",0);
if(testBox._name == undefined)
{
_loc1_.superHolder.removeMovieClip();
_loc1_.superHolder = _loc1_._parent.createEmptyMovieClip("superHolder" + _popUpLevel,_popUpLevel);
}
else
{
_loc3_.removeMovieClip();
}
if(_loc1_.rowCount == undefined)
{
_loc1_.rowCount = 8;
_loc1_.editable = false;
}
_loc1_.itemSymbol = "FComboBoxItemSymbol";
_loc1_.init();
_loc1_.permaScrollBar = false;
_loc1_.proxyBox_mc.gotoAndStop(1);
_loc1_.width = _loc1_._width;
_loc1_.height = _loc1_.proxyBox_mc._height * _loc1_._yscale / 100;
var _loc2_ = 0;
while(_loc2_ < _loc1_.labels.length)
{
_loc1_.addItem(_loc1_.labels[_loc2_],_loc1_.data[_loc2_]);
_loc2_ = _loc2_ + 1;
}
_loc1_.lastSelected = 0;
_loc1_.selectItem(0);
_loc1_._xscale = _loc1_._yscale = 100;
_loc1_.opened = false;
_loc1_.setSize(_loc1_.width);
_loc1_.highlightTop(false);
if(_loc1_.changeHandler.length > 0)
{
_loc1_.setChangeHandler(_loc1_.changeHandler);
}
_loc1_.onUnload = function()
{
this.superHolder.removeMovieClip();
};
_loc1_.setSelectedIndex(0,false);
_loc1_.value = "";
_loc1_.focusEnabled = true;
_loc1_.changeFlag = false;
}
FComboBoxClass.prototype = new FScrollSelectListClass();
Object.registerClass("FComboBoxSymbol",FComboBoxClass);
FComboBoxClass.prototype.modelChanged = function(eventObj)
{
var _loc1_ = this;
super.modelChanged(eventObj);
var _loc2_ = eventObj.event;
if(_loc2_ == "addRows" || _loc2_ == "deleteRows")
{
var diff = eventObj.lastRow - eventObj.firstRow + 1;
var mode = _loc2_ != "addRows" ? -1 : 1;
var _loc3_ = _loc1_.getLength();
var lenBefore = _loc3_ - mode * diff;
if(_loc1_.rowCount > lenBefore || _loc1_.rowCount > _loc3_)
{
_loc1_.invalidate("setSize");
}
if(_loc1_.getSelectedIndex() == undefined)
{
_loc1_.setSelectedIndex(0,false);
}
}
else if(_loc2_ == "updateAll")
{
_loc1_.invalidate("setSize");
}
};
FComboBoxClass.prototype.removeAll = function()
{
var _loc1_ = this;
if(_loc1_.enable)
{
super.removeAll();
if(_loc1_.editable)
{
_loc1_.value = "";
}
_loc1_.invalidate("setSize");
}
};
FComboBoxClass.prototype.setSize = function(w)
{
var _loc1_ = this;
var _loc2_ = w;
if(!(_loc2_ == undefined || typeof _loc2_ != "number" || _loc2_ <= 0 || !_loc1_.enable))
{
_loc1_.proxyBox_mc._width = _loc2_;
_loc1_.container_mc.removeMovieClip();
_loc1_.measureItmHgt();
_loc1_.container_mc = _loc1_.superHolder.createEmptyMovieClip("container",3);
_loc1_.container_mc.tabChildren = false;
_loc1_.setPopUpLocation(_loc1_.container_mc);
_loc1_.container_mc.attachMovie("FBoundingBoxSymbol","boundingBox_mc",0);
_loc1_.boundingBox_mc = _loc1_.container_mc.boundingBox_mc;
_loc1_.boundingBox_mc.component = _loc1_;
_loc1_.registerSkinElement(_loc1_.boundingBox_mc.boundingBox,"background");
_loc1_.proxyBox_mc._height = _loc1_.itmHgt;
_loc1_.numDisplayed = Math.min(_loc1_.rowCount,_loc1_.getLength());
if(_loc1_.numDisplayed < 3)
{
_loc1_.numDisplayed = Math.min(3,_loc1_.getLength());
}
_loc1_.height = _loc1_.numDisplayed * (_loc1_.itmHgt - 2) + 2;
super.setSize(_loc2_,_loc1_.height);
_loc1_.attachMovie("DownArrow","downArrow",10);
_loc1_.downArrow._y = 0;
_loc1_.downArrow._width = _loc1_.itmHgt;
_loc1_.downArrow._height = _loc1_.itmHgt;
_loc1_.downArrow._x = _loc1_.proxyBox_mc._width - _loc1_.downArrow._width;
_loc1_.setEditable(_loc1_.editable);
_loc1_.container_mc._visible = _loc1_.opened;
_loc1_.highlightTop(false);
_loc1_.fader = _loc1_.superHolder.attachMovie("FBoundingBoxSymbol","faderX",4);
_loc1_.registerSkinElement(_loc1_.fader.boundingBox,"background");
_loc1_.fader._width = _loc1_.width;
_loc1_.fader._height = _loc1_.height;
_loc1_.fader._visible = false;
}
};
FComboBoxClass.prototype.setDataProvider = function(dp)
{
super.setDataProvider(dp);
this.invalidate("setSize");
this.setSelectedIndex(0);
};
FComboBoxClass.prototype.getValue = function()
{
if(this.editable)
{
return this.fLabel_mc.getLabel();
}
return super.getValue();
};
FComboBoxClass.prototype.getRowCount = function()
{
return this.rowCount;
};
FComboBoxClass.prototype.setRowCount = function(count)
{
var _loc1_ = this;
var _loc3_ = count;
_loc1_.rowCount = _loc1_.getLength() <= _loc3_ ? _loc3_ : Math.max(_loc3_,3);
_loc1_.setSize(_loc1_.width);
var _loc2_ = _loc1_.getLength();
if(_loc2_ - _loc1_.getScrollPosition() < _loc1_.rowCount)
{
_loc1_.setScrollPosition(_loc2_ - Math.min(_loc1_.rowCount,_loc2_));
_loc1_.invalidate("updateControl");
}
};
FComboBoxClass.prototype.setEditable = function(editableFlag)
{
var _loc1_ = this;
if(_loc1_.enable)
{
_loc1_.editable = editableFlag;
if(!_loc1_.editable)
{
_loc1_.onPress = _loc1_.pressHandler;
_loc1_.useHandCursor = false;
_loc1_.trackAsMenu = true;
_loc1_.attachMovie("FComboBoxItemSymbol","fLabel_mc",5,{controller:_loc1_,itemNum:-1});
_loc1_.fLabel_mc.onRollOver = undefined;
_loc1_.fLabel_mc.setSize(_loc1_.width - _loc1_.itmHgt + 1,_loc1_.itmHgt);
_loc1_.topLabel = _loc1_.getSelectedItem();
_loc1_.fLabel_mc.drawItem(_loc1_.topLabel,false);
_loc1_.highlightTop(false);
}
else
{
_loc1_.attachMovie("FLabelSymbol","fLabel_mc",5);
_loc1_.fLabel_txt = _loc1_.fLabel_mc.labelField;
_loc1_.fLabel_txt.type = "input";
_loc1_.fLabel_txt._x = 4;
_loc1_.fLabel_txt.onSetFocus = _loc1_.onLabelFocus;
_loc1_.fLabel_mc.setSize(_loc1_.width - _loc1_.itmHgt - 3);
delete _loc1_.onPress;
_loc1_.fLabel_txt.onKillFocus = function()
{
this._parent._parent.myOnKillFocus();
};
_loc1_.fLabel_mc.setLabel(_loc1_.value);
_loc1_.fLabel_txt.onChanged = function()
{
this._parent._parent.findInputText();
};
_loc1_.downArrow.onPress = _loc1_.buttonPressHandler;
_loc1_.downArrow.useHandCursor = false;
_loc1_.downArrow.trackAsMenu = true;
}
}
};
FComboBoxClass.prototype.setEnabled = function(enabledFlag)
{
var _loc1_ = this;
var _loc2_ = enabledFlag;
_loc2_ = !(_loc2_ == undefined || typeof _loc2_ != "boolean") ? _loc2_ : true;
super.setEnabled(_loc2_);
_loc1_.registerSkinElement(_loc1_.boundingBox_mc.boundingBox,"background");
_loc1_.proxyBox_mc.gotoAndStop(!_loc1_.enable ? "disabled" : "enabled");
_loc1_.downArrow.gotoAndStop(!_loc1_.enable ? 3 : 1);
if(_loc1_.editable)
{
_loc1_.fLabel_txt.type = !_loc2_ ? "dynamic" : "input";
_loc1_.fLabel_txt.selectable = _loc2_;
}
else if(_loc2_)
{
_loc1_.fLabel_mc.drawItem(_loc1_.topLabel,false);
_loc1_.setSelectedIndex(_loc1_.getSelectedIndex(),false);
}
_loc1_.fLabel_mc.setEnabled(_loc1_.enable);
_loc1_.fLabel_txt.onSetFocus = !_loc2_ ? undefined : _loc1_.onLabelFocus;
};
FComboBoxClass.prototype.setSelectedIndex = function(index, flag)
{
var _loc1_ = this;
super.setSelectedIndex(index,flag);
if(!_loc1_.editable)
{
_loc1_.topLabel = _loc1_.getSelectedItem();
_loc1_.fLabel_mc.drawItem(_loc1_.topLabel,false);
}
else
{
_loc1_.value = flag == undefined ? _loc1_.getSelectedItem().label : "";
_loc1_.fLabel_mc.setLabel(_loc1_.value);
}
_loc1_.invalidate("updateControl");
};
FComboBoxClass.prototype.setValue = function(value)
{
var _loc1_ = this;
if(_loc1_.editable)
{
_loc1_.fLabel_mc.setLabel(value);
_loc1_.value = value;
}
};
FComboBoxClass.prototype.pressHandler = function()
{
var _loc1_ = this;
_loc1_.focusRect.removeMovieClip();
if(_loc1_.enable)
{
if(!_loc1_.opened)
{
_loc1_.onMouseUp = _loc1_.releaseHandler;
}
else
{
_loc1_.onMouseUp = undefined;
}
_loc1_.changeFlag = false;
if(!_loc1_.focused)
{
_loc1_.pressFocus();
_loc1_.clickFilter = !_loc1_.editable ? true : false;
}
if(!_loc1_.clickFilter)
{
_loc1_.openOrClose(!_loc1_.opened);
}
else
{
_loc1_.clickFilter = false;
}
}
};
FComboBoxClass.prototype.clickHandler = function(itmNum)
{
var _loc1_ = this;
if(!_loc1_.focused)
{
if(_loc1_.editable)
{
_loc1_.fLabel_txt.onKillFocus = undefined;
}
_loc1_.pressFocus();
}
super.clickHandler(itmNum);
_loc1_.selectionHandler(itmNum);
_loc1_.onMouseUp = _loc1_.releaseHandler;
};
FComboBoxClass.prototype.highlightTop = function(flag)
{
var _loc1_ = this;
if(!_loc1_.editable)
{
_loc1_.fLabel_mc.drawItem(_loc1_.topLabel,flag);
}
};
FComboBoxClass.prototype.myOnSetFocus = function()
{
super.myOnSetFocus();
this.fLabel_mc.highlight_mc.gotoAndStop("enabled");
this.highlightTop(true);
};
FComboBoxClass.prototype.drawFocusRect = function()
{
var _loc1_ = this;
_loc1_.drawRect(-2,-2,_loc1_.width + 4,_loc1_._height + 4);
};
FComboBoxClass.prototype.myOnKillFocus = function()
{
var _loc1_ = this;
if(Selection.getFocus().indexOf("labelField") == -1)
{
super.myOnKillFocus();
delete _loc1_.fLabel_txt.onKeyDown;
_loc1_.openOrClose(false);
_loc1_.highlightTop(false);
}
};
FComboBoxClass.prototype.setPopUpLocation = function(mcRef)
{
var _loc1_ = this;
var _loc3_ = mcRef;
_loc3_._x = _loc1_._x;
var _loc2_ = {x:_loc1_._x,y:_loc1_._y + _loc1_.proxyBox_mc._height};
_loc1_._parent.localToGlobal(_loc2_);
_loc3_._parent.globalToLocal(_loc2_);
_loc3_._x = _loc2_.x;
_loc3_._y = _loc2_.y;
if(_loc1_.height + _loc3_._y >= Stage.height)
{
_loc1_.upward = true;
_loc3_._y = _loc2_.y - _loc1_.height - _loc1_.proxyBox_mc._height;
}
else
{
_loc1_.upward = false;
}
};
FComboBoxClass.prototype.openOrClose = function(flag)
{
var _loc1_ = this;
var _loc2_ = flag;
if(_loc1_.getLength() != 0)
{
_loc1_.setPopUpLocation(_loc1_.container_mc);
if(_loc1_.lastSelected != -1 && (_loc1_.lastSelected < _loc1_.topDisplayed || _loc1_.lastSelected > _loc1_.topDisplayed + _loc1_.numDisplayed))
{
super.moveSelBy(_loc1_.lastSelected - _loc1_.getSelectedIndex());
}
!_loc2_ ? _loc1_.downArrow.gotoAndStop(1) : _loc1_.downArrow.gotoAndStop(2);
if(_loc2_ != _loc1_.opened)
{
_loc1_.highlightTop(!_loc2_);
_loc1_.fadeRate = _loc1_.styleTable.popUpFade.value;
if(!_loc2_ || _loc1_.fadeRate == undefined || _loc1_.fadeRate == 0)
{
_loc1_.opened = _loc1_.container_mc._visible = _loc2_;
}
else
{
_loc1_.setPopUpLocation(_loc1_.fader);
_loc1_.time = 0;
_loc1_.const = 85 / Math.sqrt(_loc1_.fadeRate);
_loc1_.fader._alpha = 85;
_loc1_.container_mc._visible = _loc1_.fader._visible = true;
_loc1_.onEnterFrame = function()
{
var _loc1_ = this;
_loc1_.fader._alpha = 100 - (_loc1_.const * Math.sqrt(++_loc1_.time) + 15);
if(_loc1_.time >= _loc1_.fadeRate)
{
_loc1_.fader._visible = false;
delete _loc1_.onEnterFrame;
_loc1_.opened = true;
}
};
}
}
}
};
FComboBoxClass.prototype.fireChange = function()
{
var _loc1_ = this;
_loc1_.lastSelected = _loc1_.getSelectedIndex();
if(!_loc1_.editable)
{
_loc1_.topLabel = _loc1_.getSelectedItem();
_loc1_.fLabel_mc.drawItem(_loc1_.topLabel,true);
}
else
{
_loc1_.value = _loc1_.getSelectedItem().label;
_loc1_.fLabel_mc.setLabel(_loc1_.value);
}
_loc1_.executeCallback();
};
FComboBoxClass.prototype.releaseHandler = function()
{
var _loc1_ = this;
var _loc2_ = _root;
var _loc3_ = _loc1_.boundingBox_mc.hitTest(_loc2_._xmouse,_loc2_._ymouse);
if(_loc1_.changeFlag)
{
if(_loc3_)
{
_loc1_.fireChange();
}
_loc1_.openOrClose(!_loc1_.opened);
}
else if(_loc3_)
{
_loc1_.openOrClose(false);
}
else
{
_loc1_.onMouseDown = function()
{
var _loc1_ = this;
var _loc2_ = _root;
if(!_loc1_.boundingBox_mc.hitTest(_loc2_._xmouse,_loc2_._ymouse) && !_loc1_.hitTest(_loc2_._xmouse,_loc2_._ymouse))
{
_loc1_.onMouseDown = undefined;
_loc1_.openOrClose(false);
}
};
}
_loc1_.changeFlag = false;
_loc1_.onMouseUp = undefined;
clearInterval(_loc1_.dragScrolling);
_loc1_.dragScrolling = undefined;
};
FComboBoxClass.prototype.moveSelBy = function(itemNum)
{
var _loc1_ = this;
if(itemNum != 0)
{
super.moveSelBy(itemNum);
if(_loc1_.editable)
{
_loc1_.setValue(_loc1_.getSelectedItem().label);
}
if(!_loc1_.opened)
{
if(_loc1_.changeFlag && !_loc1_.isSelected(_loc1_.lastSelected))
{
_loc1_.fireChange();
}
}
}
};
FComboBoxClass.prototype.myOnKeyDown = function()
{
var _loc1_ = this;
if(_loc1_.focused)
{
if(_loc1_.editable && Key.isDown(13))
{
_loc1_.setValue(_loc1_.fLabel_mc.getLabel());
_loc1_.executeCallback();
_loc1_.openOrClose(false);
}
else if((Key.isDown(13) || Key.isDown(32) && !_loc1_.editable) && _loc1_.opened)
{
if(_loc1_.getSelectedIndex() != _loc1_.lastSelected)
{
_loc1_.fireChange();
}
_loc1_.openOrClose(false);
_loc1_.fLabel_txt.hscroll = 0;
}
super.myOnKeyDown();
}
};
FComboBoxClass.prototype.findInputText = function()
{
if(!this.editable)
{
super.findInputText();
}
};
FComboBoxClass.prototype.onLabelFocus = function()
{
var _loc1_ = this;
_loc1_._parent._parent.tabFocused = false;
_loc1_._parent._parent.focused = true;
_loc1_.onKeyDown = function()
{
this._parent._parent.myOnKeyDown();
};
Key.addListener(_loc1_);
};
FComboBoxClass.prototype.buttonPressHandler = function()
{
this._parent.pressHandler();
};